﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AdministracionCooperativa.Controlador;
using AdministracionCooperativa.entidades;

namespace AdministracionCooperativa.Formularios
{
    public partial class Frmcb : Form
    {
        private catuni unidad =null;
        public Frmcb()
        {
            InitializeComponent();
        }
        private void Frmcb_Load(object sender, EventArgs e)
        {
            grupoDetalle.Enabled = false;
            textBox1.Visible = false;
        }
        private void button7_Click(object sender, EventArgs e)
        {
            Application.OpenForms["Frmcb"].Close();
        }

      
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtNumeroUnidad.Text))
                MessageBox.Show("Tiene que capturar el numero de Unidad", "CONTTAS", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                var accion = " Actualizada";
                if (unidad == null)
                {
                    unidad = new catuni();
                    unidad.NUMUNI = txtNumeroUnidad.Text;
                    accion = " Creada";
                }
                tbltaller taller = null;
                if (chkTaller.Tag != null && checkBox1.Checked)
                {
                    taller = (tbltaller)chkTaller.Tag;
                    taller.FECFIN = Convert.ToDateTime(txtFechaSalida.Text);
                }
                else
                    if (chkTaller.Checked)
                    {
                        taller = new tbltaller();
                        var f = fechaTaller.Value;
                        taller.FECINI = f;
                        taller.CATUNI_NUMUNI = unidad.NUMUNI;
                    }

                unidad.CATCHO_SEGSOC = (string)cmbChofer.SelectedValue;
                if ((string)cmbPosturero.SelectedValue == null)
                    unidad.POSTURERO = "";
                else
                    unidad.POSTURERO = (string)cmbPosturero.SelectedValue;
                unidad.COSTOPOS = Convert.ToDecimal(textBox1.Text);
                unidad.CATPRO_IDPRO = (long)cmbSocio.SelectedValue;
                unidad.CATCOU_idCOU = (string)cmbTipo.SelectedValue;
                unidad.PAGPOS = chkPosturero.Checked;
                unidad.PAGSOC = chkSocio.Checked;
                unidad.PAGSUB = chkSubBarrueta.Checked;
                ControladorUnidad.Guardar(unidad);
                ControladorUnidad.GuardarTaller(taller);
                inicializaControles();
                grupoDetalle.Enabled = false;
                MessageBox.Show("Unidad " + unidad.NUMUNI + accion, "CONTTAS", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            txtBuscarUnidad.Focus();
        }
        private void txtBuscarUnidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsDigit(e.KeyChar) | char.IsControl(e.KeyChar) | char.IsPunctuation(e.KeyChar)))
            {
                e.Handled = true;
            }
            if (e.KeyChar == Convert.ToChar(Keys.Enter))
            {
                btnBuscar.PerformClick();
            }
        }

        private void LlenarCombos()
        {
            cmbChofer.DataSource = ControladorChofer.GetAllNombreAndSegSocChoferes();
            cmbChofer.DisplayMember = "Value";
            cmbChofer.ValueMember = "Key";
            //cmbChofer.Refresh();
            cmbPosturero.DataSource = ControladorChofer.GetAllNombreAndSegSocPostureros();
            cmbPosturero.DisplayMember = "Value";
            cmbPosturero.ValueMember = "Key";
            //cmbPosturero.Refresh();

            cmbSocio.DataSource = ControladorSocios.GetAllNombreAndSegSocSocios();
            cmbSocio.DisplayMember = "Value";
            cmbSocio.ValueMember = "Key";

            cmbTipo.DataSource = ControladorAdminCuota.AllTipoUnidad();
            cmbTipo.DisplayMember = "TIPO";
            cmbTipo.ValueMember = "idCOU";

            grupoDetalle.Enabled = true;
            chkTaller.Tag = null;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtBuscarUnidad.Text.Trim()))
            {
                txtBuscarUnidad.Text = Convert.ToInt32(txtBuscarUnidad.Text.ToString()).ToString("D4");
                if (ControladorUnidad.ExisteUnidad(this.txtBuscarUnidad.Text))
                {
                    inicializaControles();
                    BuscarDatosUnidad(txtBuscarUnidad.Text);
                    btnGuardar.Enabled = true;
                    btnEliminar.Enabled = true;
                }
                else
                {
                    MessageBox.Show("No existe unidad. Verificar", "CONTTAS", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }
        private void BuscarDatosUnidad(string u)
        {
            LlenarCombos();
            ControladorUnidad.EstablecerUnidad(u);
            unidad = ControladorUnidad.unidadActual;
            cmbChofer.SelectedValue = unidad.CATCHO_SEGSOC;
            cmbPosturero.SelectedValue = unidad.POSTURERO;
            cmbSocio.SelectedValue = unidad.CATPRO_IDPRO;
            cmbTipo.SelectedValue = unidad.CATCOU_idCOU;
            txtNumeroUnidad.Enabled = false;
            txtNumeroUnidad.Text = unidad.NUMUNI;
            textBox1.Text = unidad.COSTOPOS.ToString();
            chkPosturero.Tag = unidad.COSTOPOS;
            chkPosturero.Checked = (bool)unidad.PAGPOS;
            chkSocio.Checked = (bool)unidad.PAGSOC;
            chkSubBarrueta.Checked = (bool)unidad.PAGSUB;
            chkEliminarPosturero.Visible = true;
            var entaller = ControladorUnidad.EstaEnTaller();
            if (entaller != null)
            {
                chkTaller.Checked = true;
                chkTaller.Tag = entaller;
                txtFechaSalida.Visible = true;
                checkBox1.Visible =true;
                fechaTaller.Value = (DateTime)entaller.FECINI;
                txtFechaSalida.Text = DateTime.Today.ToString("d");
            }
        }
        private void btnNuevo_Click(object sender, EventArgs e)
        {
            inicializaControles();
            LlenarCombos();
            btnGuardar.Enabled = true;
            grupoDetalle.Enabled = true;
            txtNumeroUnidad.Enabled = true;
            txtNumeroUnidad.Focus();
        }
        private void inicializaControles()
        {
            txtNumeroUnidad.Enabled = false;
            txtNumeroUnidad.Text = "";
            chkTaller.Checked = false;
            checkBox1.Visible = false;
            txtFechaSalida.Visible = false;
            chkPosturero.Checked = false;
            chkSocio.Checked = false;
            chkSubBarrueta.Checked = false;
            textBox1.Visible = false;
            textBox1.Text = "0";
            chkEliminarPosturero.Visible = false;
            chkPosturero.Tag = 0.0M;
            btnGuardar.Enabled = false;
            btnEliminar.Enabled = false;
        }
        private void txtBuscarUnidad_TextChanged(object sender, EventArgs e)
        {

        }
        private void chkTaller_CheckedChanged(object sender, EventArgs e)
        {
            if (chkTaller.Tag != null)
            {
                checkBox1.Visible = chkTaller.Checked;
                txtFechaSalida.Visible = chkTaller.Checked;
            }
        }

        private void txtNumeroUnidad_Leave(object sender, EventArgs e)
        {
            if (ControladorUnidad.ExisteUnidad(txtNumeroUnidad.Text))
            {
                MessageBox.Show("El numero de unidad esta vigente. Verifique...", "CONTTAS", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtNumeroUnidad.Select(0,txtNumeroUnidad.Text.Length);
                txtNumeroUnidad.Focus();

            }
        }

        private void txtNumeroUnidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsDigit(e.KeyChar) | char.IsControl(e.KeyChar) | char.IsPunctuation(e.KeyChar)))
            {
                e.Handled = true;
            }
        }

        private void chkPosturero_CheckedChanged(object sender, EventArgs e)
        {
            textBox1.Visible = chkPosturero.Checked;
            if (chkPosturero.Checked == false)
                textBox1.Text = "0";
            else
                textBox1.Text = ((decimal)chkPosturero.Tag).ToString();
        }

        private void chkEliminarPosturero_CheckedChanged(object sender, EventArgs e)
        {
            if (chkEliminarPosturero.Checked==true)
            {
                cmbPosturero.SelectedValue = "";
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (ControladorUnidad.unidadActual != null)
            {
                var unidad = ControladorUnidad.unidadActual.NUMUNI;
                ControladorUnidad.Eliminar(ControladorUnidad.unidadActual);
                MessageBox.Show("Unidad "+unidad+" Eliminada", "CONTTAS", MessageBoxButtons.OK, MessageBoxIcon.Information);
                inicializaControles();
                txtBuscarUnidad.Focus();
            }
        }

        private void txtBuscarUnidad_Click(object sender, EventArgs e)
        {
            txtBuscarUnidad.Select(0, txtBuscarUnidad.Text.Length);
        }
    }
}
